package net.zigin.nhi.could.waste.service;

import net.zigin.nhi.could.waste.dto.SysUserDto;
import net.zigin.nhi.could.waste.model.SysUser;
import net.zigin.nhi.could.waste.service.BaseService;
import net.zigin.nhi.could.waste.vo.SysUserVo;

import java.util.List;

/*#################################################################*
# 说明:以下代码通过哲勤代码生成工具自动生成    
# 工具:GeneratorCode
# 作者:mgw1986                                                  
# 生成时间:2021-9-7 19:08:56                                               
##################################################################*/


/**
 *  SysUser服务接口类
 * @ClassName: SysUserService
 * @author mgw1986
 * @date 2021-9-7 19:08:56
 * @version V1.0
 */
public interface SysUserService extends BaseService<SysUser, String> {

    /**
     * 保存编辑用户
     * @param userDto 用户详情
     * @return 用户ID
     */
    String saveOrUpdate(SysUserDto userDto);

    /**
     * 获取用户列表
     * @param userDto 用户查询条件
     * @return 用户列表
     */
    List<SysUserVo> getUserList(SysUserDto userDto);

    /**
     * 获取用户列表数量
     * @param userDto 用户查询条件
     * @return 用户列表数量
     */
    Integer getUserCount(SysUserDto userDto);

    /**
     * 角色获取用户列表
     * @param roleId 角色ID
     * @return 用户列表
     */
    List<SysUserVo> infoByRoleId(String roleId);

    /**
     * 账户获取用户详情
     * @param userAccount 用户账户
     * @return 用户详情
     */
    SysUserVo getUserByUserAccount(String userAccount);

    /**
     * 获取当前用户
     * @return 用户详情
     */
    SysUserVo getCurrentUser();

    /**
     * 用户ID获取用户详情 包括菜单、角色信息
     * @param id 用户ID
     * @return 用户详情
     */
    SysUserVo getInfoById(String id);

    /**
     * 修改账户密码
     * @param userDto 用户信息
     * @return
     */
    void modifyPassword(SysUserDto userDto);

    /**
     * 通过手机号获取用户信息
     * @param mobile 手机号
     * @return 用户信息
     */
    SysUserVo getUserByUserPhone(String mobile);

    /**
     * 发送验证码
     * @param mobile
     * @return
     */
    String sendMessage(String mobile);

    void checkMobileExist(String mobile);

    String checkMobileExistReturnUserStaffId(String mobile);

    void modifyPasswordWithSmsCode(SysUserDto userDto);

    void updateGuideCode(List<String> guideCode);
}
